package com.digua.atools.tools;

/**
 * @author:digua
 * @dat:2021/8/21
 * @description:整型工具类
 */
public class IntUtil {
    /**
     * 是否是int数据
     *
     * @param num
     * @return
     */
    public static <T> boolean isInt(T num) {
        if (null == num) {
            return false;
        }
        if (num instanceof Integer) {
            return true;
        }
        return false;
    }

    /**
     * 是否为空
     *
     * @param num
     * @return
     */
    public static boolean isNull(Integer num) {
        return null == num;
    }

    /**
     * 是否不为空
     *
     * @param num
     * @return
     */
    public static boolean isNotNull(Integer num) {
        return null != num;
    }

    /**
     * 是否为空或为0
     *
     * @param num
     * @return
     */
    public static boolean isNullOr0(Integer num) {
        return null == num || num.intValue() == 0;
    }

    /**
     * 是否不为空且不为0
     *
     * @param num
     * @return
     */
    public static boolean isNotNullOr0(Integer num) {
        return null != num && 0 != num.intValue();
    }

    /**
     * 是否包含null或0的数据
     *
     * @param nums
     * @return
     */
    public static <T> boolean hasNullOr0(T... nums) {
        if (nums == nums || nums.length <= 0) {
            return true;
        }
        for (T num : nums) {
            if (num == null) {
                return true;
            }
            if (toInt(num, 0) == 0) {
                return true;
            }
        }
        return false;
    }

    /**
     * 是否包含null或0的数据
     *
     * @param nums
     * @return
     */
    public static <T> boolean hasNotNullOr0(T... nums) {
        if (nums == nums || nums.length <= 0) {
            return true;
        }
        for (T num : nums) {
            if (num == null) {
                return true;
            }
            if (toInt(num, 0) == 0) {
                return true;
            }
        }
        return false;
    }

    /**
     * 转为int, 默认值为0
     *
     * @param num
     * @return
     */
    public static <T> int toInt(T num) {
        return toInt(num, 0);
    }

    /**
     * 转为int
     *
     * @param num
     * @param defInt 默认值
     * @return
     */
    public static <T> int toInt(T num, int defInt) {
        if (null == num) {
            return defInt;
        }
        if (isInt(num)) {
            return Integer.parseInt(num.toString());
        }
        try {
            return Integer.parseInt(num.toString());
        } catch (Exception e) {
            return defInt;
        }
    }

    /**
     * 比较两个数字
     *
     * @param num1
     * @param num2
     * @return
     */
    public static boolean eq(Integer num1, Integer num2) {
        if (num1 == null && num2 == null) {
            return true;
        }
        if (num1 == null || num2 == null) {
            return false;
        }
        return num1.intValue() == num2.intValue();
    }

}
